The invention pertains to methods for programming computers and the software tools for implementing these methods.
Early computer programming methods were limited to procedure based languages in which the actions of the computer were controlled by a long sequence from beginning to end. During execution of the sequence, control might be passed from one program to another which was specified by the first program and then control might be returned to the original program or might continue on to a third. In any event, control followed a sequence established by the programmer.
In order to model the reasoning processes of human experts, expert computer systems were devised which included long lists of facts and long lists of rules stating inferences that might be drawn if and when certain facts exist. When a rule is satisfied, consequences will typically cause the specification or updating of some of the facts. These changed facts will then cause other rules to become satisfied and the choice must again be made of which rule to apply next. In such rule-based systems, there are typically many different rules which are satisfied by any given condition of the set of facts and the application of one rule ahead of another will frequently cause a difference in the result or the speed at which it is achieved.
For this reason, and also because the numbers of rules are so large, applying every rule which is satisfied in each iteration of the system would be prohibitively slow, considerable research and experimentation has been devoted to developing "control strategies" and "inferencing methods" for determining which of the rules should be applied when. For a given set of facts and a given set of rules, different control strategies will produce different results or will reach the results with different efficiencies.
The creation of rule-based expert systems is a complex task, typically requiring a "knowledge engineer" to work with an expert to translate the expertise into long lists of potentially relevant facts and long lists of rules. Once the system is built, it is difficult to verify that the system will produce correct results in each situation and it is difficult to analyze the exact steps taken by the system to achieve each result.
Another architecture for modeling human expertise in computers uses "frames" or "objects" to represent items or classes of items in the real world, and then allows "children" of those frames or objects to be defined which inherit characteristics of their "parents" but are further differentiated from their "siblings" with additional information. Such a system is quite effective for representing taxonomic knowledge such as the method of organizing animal life into kingdoms, phyla, classes, orders, families, genera, and species.